﻿/*
 * Создан: Оникийчук Антон Игоревич
 * Компания: ООО "ИМСАТ"
 * Дата создания: 21.01.2009
 * Время создания: 10:25
 * Emal разработчика: onikiychuka@gmail.com
 */
using System.Xml;

namespace IMSAT.OFTD.DOM
{
    /// <summary>
    /// Описание слоя
    /// </summary>
    public class Layer : Node
    {
        private string _color = "#000000";
        private bool _editable = true;
        private string _id = "";
        private string _name = "";
        private bool _printable = true;

        private bool _visible = true;

        public string Name
        {
            get { return _name; }
        }

        public bool Visible
        {
            get { return _visible; }
            set { _visible = value; }
        }

        public bool Editable
        {
            get { return _editable; }
            set { _editable = value; }
        }

        public bool Printable
        {
            get { return _printable; }
            set { _printable = value; }
        }

        public string Color
        {
            get { return _color; }
            set { _color = value; }
        }

        public string Id
        {
            get { return _id; }
        }

        #region Nested type: Reader

        public class Reader : NodeXmlReader
        {
            protected override bool CheckReader(XmlReader rd, bool _prevRes, Node parentNode)
            {
                if (_prevRes)
                {
                    if (rd.LocalName == "Слой")
                        return true;
                    return false;
                }
                return base.CheckReader(rd, _prevRes, parentNode);
            }

            protected override Node InitNode(XmlReader reader, Node initedNode)
            {
                if (initedNode == null)
                    initedNode = new Layer();
                var l = (Layer) initedNode;
                int cnt = reader.AttributeCount;
                for (int i = 0; i < cnt; i++)
                {
                    reader.MoveToAttribute(i);
                    if (reader.LocalName == "Название")
                    {
                        l._name = reader.Value;
                    }
                    else if (reader.LocalName == "Видимый")
                    {
                        l._visible = reader.Value != "0";
                    }
                    else if (reader.LocalName == "Печатаемый")
                    {
                        l._printable = reader.Value != "0";
                    }
                    else if (reader.LocalName == "Редактируемый")
                    {
                        l._editable = reader.Value != "0";
                    }
                    else if (reader.LocalName == "Цвет")
                    {
                        l._color = reader.Value;
                    }
                    else if (reader.LocalName == "id")
                    {
                        l._id = reader.Value;
                    }
                    reader.MoveToElement();
                }
                return base.InitNode(reader, initedNode);
            }

            protected override Node InitObjectAfterBuild(Node result)
            {
                return base.InitObjectAfterBuild(result);
            }
        }

        #endregion
    }
}